Spring 개요

가장 좋은 문서는 spring.io 공식 홈페이지에서 제공하는 documents 입니다. 개인적으로 공부하면서 작성하는 문서라 틀린 부분이 있을 수 있으니, 반드시 공식 문서를 참조하시기 바랍니다.

스프링 공식 홈페이지 > > 소스코드 > > 가이드


1. 스프링

공식 홈페이지 첫 화면을 보면 Spring : the source for modern java 라고 적혀있습니다.

이 문장만으로는 이해하기 어려워서 구글에 검색을 해도 우리나라에서는 스프링하면 스프링 프레임워크(Spring framework)를 주로 이야기해서 스프링의 정의에 대해 다루는 자료는 그렇게 많지 않았습니다.

그럼에도 스프링이란 무엇인지 명확하게 짚고 넘어가는 것이 좋을 것 같습니다.

스프링(Spring)


자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크

라는 정의를 가지고 있습니다.

얼핏 보면 감이 잘 안 잡히기 때문에 시간을 내셔서 제가 참조했던 ‘12bme’님의 포스트[^1] 를 자세히 읽어보시고 이해하시면 좋을 것 같습니다.

또한 공식 홈페이지에 따르면 Spring 개발진의 철학이 Rod Johnson이 2002년 10월에 출판한 ‘Expert One-on-One J2EE Design and Develpment’에 요약되어 있다고 하니 여유가 있다면 한번 읽어보면 깊은 이해를 하는데 도움이 될 것 같습니다.

스프링 개발진의 목표(Aim) 로는,

  • 스프링은 사용하기 즐거워야 하고
  • 여러분의 애플리케이션 코드가 스프링 API들에 의존해서는 안되며
  • JDO, Toplink, Hibernate와 같은 훌륭한 O/R mapping solution들과 경쟁하지 않지만, 통합을 촉진하는 것 입니다.

또한 공식 홈페이지에서 PROJECTS 탭을 보면 스프링을 활용한 다양한 프로젝트들을 보실 수 있습니다.

  • Spring Boot
  • Spring Framework
  • Spring Cloud
  • Etc …

이처럼 스프링은 어디서나 간단하고, 이식하기 쉬우며, 신속하고, 유연하게 JVM 기반의 시스템과 애플리케이션을 구축할 수 있어 ==다양한 프로젝트들의 디자인이 되는 모듈==이라고 생각할 수 있습니다.

[^1]: 스프링이란 무엇인가? - 12bme

2. 스프링 프레임워크란

위에서 언급한 12bme님의 포스트를 보셨으면 쉽게 이해하시겠지만, 엔터프라이즈 애플리케이션 개발이 어려운 이유는 사회가 점점 복잡해지고, 시스템에서 다루어야 하는 업무의 복잡도와 의존도가 높아져 개발의 복잡성이 증가했기 때문입니다. 이에 사용자의 요구를 빠르고 안정적이면서 확장 가능한 형태로 유지가히 위한 로우레벨(Low level) 수준의 기술적 처리가 필요해졌고 우리는 스프링 프레임워크를 통해 쉽게 자바 엔터프라이즈 애플리케이션을 개발할 수 있게 되었습니다.

history

2004년 3월 Spring Framework 1.0 버전을 시작으로, 포스트 작성일 기준(2019년 1월) Spring Framework는 5.1.4 버전이 최신 버전입니다.

짧게 스프링(Spring)이라고 불리는 스프링 프레임워크는 모든 플랫폼에서 자바 기반 엔터프라이즈 애플리케이션(JAVA EE) 개발을 편하게 해주는 종합적인 프로그래밍 및 구성 모델을 제공합니다.

프레임워크의 바탕인 스프링 의 핵심 요소가 애플리케이션 수준에서의 인프라 지원이기 때문에 스프링 프레임워크에서는 개발 환경 구축에 필요한 하부구조(Infrastructure)를 포괄적으로 제공하고 처리하기 때문에 개발자는 애플리케이션 개발(plumbing[^2])에 집중할 수 있게 되었습니다.

plumbing

참고로 스프링 프레임워크는 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자 정부 표준 프레임워크의 기반 기술입니다.

[^2]: 원문에는 plumbing이라는 단어로 표현하는데, 프레임워크가 부품들 다 만들어 놓으면 개발자는 그것들을 조립하는 느낌이라 이런 단어를 사용한 것 같습니다.